from flask import Flask, render_template, request, escape
import integrated
from geo import geocode
key = "dcf6ab6ec2715890c639887ab32bfc87"
app = Flask(__name__)

def log_request(req:"flask request",res:str):
  with open("vsearch.log","a") as log:
    print(req.form,req.host_url,req.remote_addr,res,file=log,sep="|")

@app.route('/')
def base():
    title = '公交路径规划'
    return render_template('entry.html',the_title=title,)


@app.route('/search0', methods=['POST'])
def do_search_0() -> 'html':
    key = request.form['key']
    start_address = request.form['start_address']
    end_address = request.form['end_address']
    title = '路径规划结果'
    df = integrated.direction_integrated(key, start_address, end_address)
    results = df.loc[:, ['instruction', 'distance', 'duration']]
    results.columns = ['路线指示', '路程距离', '时间']
    walk = integrated.integrated(df)
    integrated_time = integrated.integrated_time(df)
    route = results['路线指示'].tolist()
    log_request(request, route)
    用户输入的地址 = request.form['geocode']
    起点 = integrated(key,用户输入的地址)
    终点 = integrated(key, 用户输入的地址)

    return render_template('results.html',
                           the_title=title,
                           the_start_address=start_address,
                           the_end_address=end_address,
                           the_results=results,
                           the_html_table=results.to_html(index=False),
                           the_walk=walk,
                           the_walk_time=integrated_time,)


@app.route('/viewlog')
def view_the_log() -> 'html':
    contents = []
    with open('vsearch.log', 'r') as log:
        for line in log:
            contents.append([])
            for item in line.split('|'):
                contents[-1].append(escape(item))
    titles = ('用户输入数据', '远程地址', '用户代理', '查询结果')
    return render_template('log.html',the_title='查看日志',the_row_titles=titles, the_data=contents,)


if __name__ == '__main__':
    app.run(debug=True)